iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0

https://ithelp.ithome.com.tw/upload/images/20181017/20110801M91s73P7xF.png

在學 Swift 時,一直搞不懂為什麼要加上!及?;對於 nil 存在的意義更是讓我困惑,更別說知道要怎麼用,所以今天就來談談 Optional 及 nil 吧!

Optional 及 nil

我們可以利用 Optional 來處理沒有值得情況。其實 Optional 就是一個枚舉
(enum),它含有兩種情況—可能有值 或是 沒有值。
而 Swift 裡的 nil 是空值,這個 nil 不是 0 ,因為 0 也是值,存在的意義是「當無值時的替代品」。
可以在一開始宣告 Optional 的時候,在型別的後面加上「?」,變數便宣告成為無值的狀態,也就是 nil。
https://ithelp.ithome.com.tw/upload/images/20181017/20110801E9UsSw10LP.png
注意!宣告常數或是變數為 nil 時,一定要宣告「型別」並加上「?」!否則會出現紅色錯誤。

・宣告 Optional 又稱為 Wrapped,像是包起來一樣。

https://ithelp.ithome.com.tw/upload/images/20181017/20110801cDt8MouSZr.png

讀取 Optional

強制解包

當我們想要讀取 Optional 的值時,我們要在後面加上「!」。還記得前面的 Wrapped 嗎?現在我們要將它解開來(Unwrapped),這個過程我們稱之為 強制解包-Force-unwrap

https://ithelp.ithome.com.tw/upload/images/20181017/20110801EUhfKPY2GV.png

使用 if 語法檢查 Optional 裡有沒有值

我們可以用 if 語法以及「==」和「!=」比較 nil 來判斷 Optional 是否有值。

https://ithelp.ithome.com.tw/upload/images/20181017/20110801A2DX7FYMlv.png

判斷取值

我們也可以用 if let 語法來判斷 Optional 裡面有沒有值

https://ithelp.ithome.com.tw/upload/images/20181017/20110801PaWCBVwLbo.png

自動取值

在一開始宣告的型別上加上「!」,就可以讓程式一開始就去讀取他的值。

https://ithelp.ithome.com.tw/upload/images/20181017/20110801dmv2l7qzlC.png

但是這種方式要用在「確定」變數裡面有值,如果沒有值,程式是會錯誤的喔!

替 nil 提供預設值

想要在 Optional 無值時給預設值嗎?用「??」就好拉!

https://ithelp.ithome.com.tw/upload/images/20181017/20110801LhCrTRaqyE.png


上一篇
Swift4.2 Day-01 基本語法
下一篇
Swift4.2 Day-03 集合類型 — Array
系列文
菜比八iOS程式開發30天自我挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言